package query
import (
"github.com/K-Phoen/sdk"
)
const All = "$__all"
type Option func (constant *Query )
type SortOrder int
const (
None SortOrder = 0
AlphabeticalAsc SortOrder = 1
AlphabeticalDesc SortOrder = 2
NumericalAsc SortOrder = 3
NumericalDesc SortOrder = 4
AlphabeticalNoCaseAsc SortOrder = 5
AlphabeticalNoCaseDesc SortOrder = 6
)
type RefreshInterval int
const (
Never = 0
DashboardLoad = 1
TimeChange = 2
)
type Query struct {
Builder sdk .TemplateVar
}
func New (name string , options ...Option ) *Query {
query := &Query {Builder : sdk .TemplateVar {
Name : name ,
Label : name ,
Type : "query" ,
Options : []sdk .Option {},
}}
for _ , opt := range append ([]Option {Refresh (DashboardLoad )}, options ...) {
opt (query )
}
return query
}
func DataSource (source string ) Option {
return func (query *Query ) {
query .Builder .Datasource = &sdk .DatasourceRef {LegacyName : source }
}
}
func Request (request string ) Option {
return func (query *Query ) {
query .Builder .Query = request
}
}
func Sort (order SortOrder ) Option {
return func (query *Query ) {
query .Builder .Sort = int (order )
}
}
func Refresh (refresh RefreshInterval ) Option {
return func (query *Query ) {
value := int64 (refresh )
query .Builder .Refresh = sdk .BoolInt {Flag : true , Value : &value }
}
}
func Regex (regex string ) Option {
return func (query *Query ) {
query .Builder .Regex = regex
}
}
func Label (label string ) Option {
return func (query *Query ) {
query .Builder .Label = label
}
}
func HideLabel () Option {
return func (query *Query ) {
query .Builder .Hide = 1
}
}
func Hide () Option {
return func (query *Query ) {
query .Builder .Hide = 2
}
}
func Multiple () Option {
return func (query *Query ) {
query .Builder .Multi = true
}
}
func IncludeAll () Option {
return func (query *Query ) {
query .Builder .IncludeAll = true
query .Builder .Options = append (query .Builder .Options , sdk .Option {
Text : "All" ,
Value : All ,
})
}
}
func DefaultAll () Option {
return func (query *Query ) {
query .Builder .Current = sdk .Current {Text : &sdk .StringSliceString {Value : []string {"All" }, Valid : true }, Value : All }
}
}
func AllValue (value string ) Option {
return func (query *Query ) {
query .Builder .AllValue = value
}
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .